package socketmvc.server.tcp;

import org.tio.server.AcceptCompletionHandler;
import org.tio.server.TioServerConfig;
import org.tio.server.intf.TioServerHandler;
import org.tio.server.intf.TioServerListener;
import org.tio.utils.thread.pool.SynThreadPoolExecutor;

import java.util.concurrent.ThreadPoolExecutor;

public class TcpServerConfig extends TioServerConfig {
    private AcceptCompletionHandler acceptCompletionHandler	= null;
    /**
     * @param tioServerHandler
     * @param tioServerListener
     * @author: tanyaowu
     */
    public TcpServerConfig(TioServerHandler tioServerHandler, TioServerListener tioServerListener) {
        this(null, tioServerHandler, tioServerListener);
    }

    /**
     * @param name
     * @param tioServerHandler
     * @param tioServerListener
     * @author: tanyaowu
     */
    public TcpServerConfig(String name, TioServerHandler tioServerHandler, TioServerListener tioServerListener) {
        this(name, tioServerHandler, tioServerListener, null, null);
    }

    /**
     * @param tioServerHandler
     * @param tioServerListener
     * @param tioExecutor
     * @param groupExecutor
     * @author: tanyaowu
     */
    public TcpServerConfig(TioServerHandler tioServerHandler, TioServerListener tioServerListener, SynThreadPoolExecutor tioExecutor, ThreadPoolExecutor groupExecutor) {
        this(null, tioServerHandler, tioServerListener, tioExecutor, groupExecutor);
    }

    /**
     * @param name
     * @param tioServerHandler
     * @param tioServerListener
     * @param tioExecutor
     * @param groupExecutor
     * @author: tanyaowu
     */
    public TcpServerConfig(String name, TioServerHandler tioServerHandler, TioServerListener tioServerListener, SynThreadPoolExecutor tioExecutor, ThreadPoolExecutor groupExecutor) {
        super(name, tioServerHandler, tioServerListener, tioExecutor, groupExecutor);
        this.acceptCompletionHandler = new TcpAcceptCompletionHandler();
    }

    @Override
    public AcceptCompletionHandler getAcceptCompletionHandler() {
        return acceptCompletionHandler;
    }
}
